package fr.charlott;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import fr.charlott.business.dto.SaisonDTO;
import fr.charlott.business.service.CategorieService;
import fr.charlott.business.service.PersonneService;
import fr.charlott.business.service.ProduitService;
import fr.charlott.business.service.ReunionService;
import fr.charlott.business.service.SaisonService;
import fr.charlott.tools.exceptions.FunctionalException;
import fr.charlott.tools.exceptions.TechnicalException;

public class Initialiser {

    private static final Logger logger = LoggerFactory.getLogger(Initialiser.class);

    private static SaisonService saisonService;
    private static PersonneService personneService;
    private static ReunionService reunionService;
    private static CategorieService categorieService;
    private static ProduitService produitService;

    private static String anneeSaisonCourante = "2013";

    public static void main(String[] args) {
        String[] stringConfigFiles = new String[] { "application-context.xml" };
        ApplicationContext context = new ClassPathXmlApplicationContext(stringConfigFiles);

        saisonService = context.getBean(SaisonService.class);
        personneService = context.getBean(PersonneService.class);
        reunionService = context.getBean(ReunionService.class);
        produitService = context.getBean(ProduitService.class);
        categorieService = context.getBean(CategorieService.class);

        // Clear database
        reunionService.supprimerToutesLesReunions();
        personneService.supprimerToutesLesPersonnes();
        produitService.supprimerTousLesProduits();
        saisonService.supprimerToutesLesSaisons();
        categorieService.supprimerToutesLesCategories();

        SaisonDTO saison2013 = new SaisonDTO(Short.valueOf(anneeSaisonCourante));
        try {
            saison2013.setSaisonCourante(true);
            saisonService.ajouterSaison(saison2013);
        } catch (FunctionalException e) {
            logger.error(e.getMessage());
        } catch (TechnicalException e) {
            logger.error(e.getMessage());
        }

    }

}
